#!/usr/bin/env python

################################################################################
# Python Standard Library
################################################################################

import struct, re

################################################################################
# Includes
################################################################################

################################################################################
# Channel Spam Blocker
################################################################################

from protocols.bncs import BNCSPacket, ChatEvent

spam = ["www.", ".com", ".net", ".org"]

def isSpam(text):
	for item in spam:
		if len(re.compile(item, re.M|re.DOTALL|re.I).findall(text)) > 0:
			return True
	
	return False

def BNCSPacker(packet):
	if packet.messageID == ChatEvent:
		print packet.eventID
		if packet.eventID == 0x04:
			print packet.text
			if isSpam(packet.text):
				packet.message = ''
	
def BNCSUnpacker(packet):
	if packet.messageID == ChatEvent:
		packet.eventID, packet.userFlags, packet.ping, packet.ip, packet.accountNumber, packet.authority = struct.unpack("<iiiiii", packet.messageData[:24])
		print packet.messageData[24:]
		print ''.join(["\\x%02x" % ord(x) for x in packet.messageData[24:]]).strip()
		packet.username, packet.text = (re.compile("(.+)\x00(.+)", re.M|re.DOTALL).findall(packet.messageData[24:]) + [('', '')])[0]

BNCSPacket.addEventListener("pack", BNCSPacker)
BNCSPacket.addEventListener("unpack", BNCSUnpacker)

